package cn.tedu.autoshow.passport.repository;


import cn.tedu.autoshow.commons.pojo.po.LoginInfoPO;
import cn.tedu.autoshow.commons.security.LoginPrincipal;
import cn.tedu.autoshow.passport.security.AdminDetails;

/**
 * 处理管理员数据缓存的访问接口
 */
public interface IAdminJwtRepository {

    /**
     * 保存管理员的登录信息
     *
     * @param jwt              当前管理员的JWT
     * @param loginInfoPO      管理员的登录信息
     * @param adminDetails     管理员的权限/启用信息
     */
    void saveLoginInfo(String jwt, LoginInfoPO loginInfoPO, AdminDetails adminDetails);

    /**
     * 根据管理员的JWT获取登录信息
     *
     * @param jwt 当前管理员的JWT
     * @return 管理员的登录信息，如果没有匹配的数据，将返回null
     */
    LoginInfoPO getLoginInfo(String jwt, LoginInfoPO loginSimpleInfo);

    /**
     * 删除管理员登录信息
     *
     * @param jwt 当前管理员的JWT
     * @return 是否成功删除
     */
    Boolean delete(String jwt, LoginPrincipal loginPrincipal);

    void setLoginEnable(Long id, Integer enable);

}
